home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #14 / Monster Media No. 14 (April 1996) (Monster Media, Inc.).ISO / pcboard / msgtag11.zip / MORE.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1996-01-30  |  6KB  |  442 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 3.1O (Encryption type I) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Boolean  BOOLEAN004
  23.     Boolean  BOOLEAN005
  24.     String   STRING001
  25.     String   STRING002
  26.     String   STRING003
  27.     String   STRING004
  28.     String   STRING005
  29.     String   STRING006
  30.     String   STRING007
  31.     String   STRING008
  32.     String   STRING009
  33.     String   STRING010
  34.     String   STRING011
  35.     String   STRING012
  36.     String   STRING013
  37.     String   STRING014
  38.     Byte     BYTE001
  39.     Byte     BYTE002
  40.     Byte     BYTE003
  41.     Byte     BYTE004
  42.     Byte     BYTE005
  43.     Byte     BYTE006
  44.     BigStr   BIGSTR001
  45.     BigStr   BIGSTR002
  46.  
  47. ;------------------------------------------------------------------------------
  48.  
  49.     If (AnsiOn()) Goto LABEL001
  50.     DispFile PPEPath() + "TAGOLD", 4
  51.     End
  52.     :LABEL001
  53.     STRING004 = ReadLine(PCBDat(), 204)
  54.     STRING004 = FileInf(STRING004, 6) + ":" + FileInf(STRING004, 7)
  55.     STRING012 = STRING004 + "msgtag.use"
  56.     STRING011 = STRING004 + "mtg" + String(CurConf()) + ".lst"
  57.     STRING005 = STRING004 + "userpl.dat"
  58.     If (Exist(STRING012)) Goto LABEL002
  59.     DispFile PPEPath() + "tagold", 4 + 1
  60.     End
  61.     Goto LABEL003
  62.     :LABEL002
  63.     If (FileInf(STRING011, 4) > 0) Then
  64.         FOpen 1, STRING011, 0, 0
  65.         FRead 1, BIGSTR001, FileInf(STRING011, 4)
  66.         FClose 1
  67.     Endif
  68.     :LABEL003
  69.     STRING006 = Chr(8)
  70.     STRING007 = Chr(127)
  71.     STRING008 = Chr(13)
  72.     STRING009 = Chr(27)
  73.     BYTE005 = 1
  74.     STRING010 = "00000000000000000000000000000000000000000000000000"
  75.     ClrEol
  76.     Gosub LABEL010
  77.     :LABEL004
  78.     If (BOOLEAN001) Goto LABEL008
  79.     STRING002 = Inkey()
  80.     If (STRING002 <> "") Then
  81.         If ((BYTE001 == 0) && (((STRING002 == " ") || (Left(STRING002, 2) == "UP")) || (Left(STRING002, 4) == "DOWN"))) Then
  82.             BYTE002 = GetY()
  83.             While (1) Do
  84.                 STRING004 = ScrText(1, BYTE005, 5, 0)
  85.                 If (InStr(STRING004, "Msg#") > 0) Then
  86.                     Inc BYTE005
  87.                     Break
  88.                     Continue
  89.                 Endif
  90.                 If (S2I(Mid(STRING004, 2, 4), 10) > 0) Then
  91.                     Break
  92.                     Continue
  93.                 Endif
  94.                 Inc BYTE005
  95.                 If (BYTE005 > 25) Break
  96.             EndWhile
  97.             BYTE003 = BYTE005
  98.             BYTE004 = BYTE005
  99.             If (Left(STRING002, 2) == "UP") Then
  100.                 BOOLEAN003 = 1
  101.                 BYTE003 = GetY() - 1
  102.             ElseIf ((STRING002 == " ") || (Left(STRING002, 4) == "DOWN")) Then
  103.                 STRING002 = "DOWN"
  104.                 BOOLEAN003 = 0
  105.             Endif
  106.             AnsiPos 1, BYTE002
  107.             Print STRING008
  108.             ClrEol
  109.             Print STRING009 + "[s"
  110.             DispFile PPEPath() + "TAGBAR", 1 + 4
  111.             Print STRING008
  112.             Gosub LABEL011
  113.             If (STRING013 <> "") Then
  114.                 While (1) Do
  115.                     STRING002 = Inkey()
  116.                     If (STRING002 == STRING009) Break
  117.                     If (STRING002 == STRING008) Then
  118.                         Gosub LABEL015
  119.                         Gosub LABEL014
  120.                         If (BOOLEAN003) Then
  121.                             Inc BYTE003
  122.                             STRING002 = "UP"
  123.                             Goto LABEL005
  124.                         Endif
  125.                         Dec BYTE003
  126.                         STRING002 = "DOWN"
  127.                         :LABEL005
  128.                         Gosub LABEL011
  129.                         Continue
  130.                     Endif
  131.                     If (((STRING002 == " ") || (Left(STRING002, 4) == "DOWN")) || (Left(STRING002, 2) == "UP")) Then
  132.                         If (STRING002 == " ") STRING002 = "DOWN"
  133.                         If ((STRING003 == "DOWN") && (Left(STRING002, 2) == "UP")) Then
  134.                             BYTE003 = BYTE003 - 2
  135.                             Goto LABEL006
  136.                         Endif
  137.                         If ((STRING003 == "UP") && (Left(STRING002, 4) == "DOWN")) Then
  138.                             BYTE003 = BYTE003 + 2
  139.                         Endif
  140.                         :LABEL006
  141.                         Gosub LABEL015
  142.                         Gosub LABEL011
  143.                         If (BOOLEAN002) Then
  144.                             Gosub LABEL009
  145.                             Gosub LABEL010
  146.                             BOOLEAN002 = 0
  147.                             Goto LABEL007
  148.                         Endif
  149.                         Continue
  150.                     Endif
  151.                     Delay 3
  152.                 EndWhile
  153.                 Gosub LABEL015
  154.                 Gosub LABEL009
  155.             Else
  156.                 Gosub LABEL009
  157.             Endif
  158.             Gosub LABEL010
  159.             Goto LABEL007
  160.         Else
  161.             Select Case (STRING002)
  162.                 Case STRING006, STRING007
  163.                     If (BYTE001 > 0) Then
  164.                         Print STRING006 + " "
  165.                         BYTE001 = BYTE001 - 1
  166.                         STRING001 = Left(STRING001, BYTE001)
  167.                     Else
  168.                         Goto LABEL007
  169.                     Endif
  170.                 Case STRING008
  171.                     BOOLEAN001 = 1
  172.                 Case 1, " "
  173.                     Goto LABEL007
  174.                 Case &&, "?", "H"
  175.                     SaveScrn
  176.                     Newline
  177.                     DispFile PPEPath() + "TAGHLP", 1 + 4
  178.                     Newline
  179.                     Wait
  180.                     RestScrn
  181.                     Goto LABEL007
  182.                 Case " ", 80
  183.                     STRING001 = STRING001 + STRING002
  184.                     BYTE001 = BYTE001 + 1
  185.                 Endif
  186.         End Select
  187.         Print STRING002
  188.     Else
  189.         Delay 3
  190.     Endif
  191.     :LABEL007
  192.     Goto LABEL004
  193.     :LABEL008
  194.     STRING001 = RTrim(STRING001, " ")
  195.     Print STRING008
  196.     ClrEol
  197.     KbdStuff STRING001 + STRING008
  198.     If (STRING002 == STRING008) Cls
  199.     If ((InStr(Upper(STRING001), "N") || InStr(Upper(STRING001), "NS")) || InStr(Upper(STRING001), "A")) Then
  200.         If (Exist(STRING005)) Then
  201.             GetUser
  202.             FOpen 7, STRING005, 0, 0
  203.             FGet 7, STRING004
  204.             U_PageLen = ToInt(STRING004)
  205.             FClose 7
  206.             PutUser
  207.             Delete STRING005
  208.         Endif
  209.         If (FileInf(STRING011, 4) == 0) Delete STRING011
  210.         Delete STRING012
  211.     Endif
  212.     If ((STRING011 <> "") && (Len(BIGSTR001) > 0)) Then
  213.         FOpen 1, STRING011, 1, 0
  214.         FWrite 1, BIGSTR001, Len(BIGSTR001)
  215.         FClose 1
  216.     Endif
  217.     End
  218.     :LABEL009
  219.     Print STRING009 + "[u"
  220.     ClrEol
  221.     Return
  222.     :LABEL010
  223.     DispFile PPEPath() + "TAGNEW", 4
  224.     DefColor
  225.     Return
  226.     :LABEL011
  227.     If (Left(STRING002, 4) == "DOWN") Then
  228.         If (BYTE003 < BYTE002) Then
  229.             BOOLEAN003 = 0
  230.             STRING003 = "DOWN"
  231.             STRING013 = ScrText(1, BYTE003, 8, 0)
  232.             Gosub LABEL014
  233.             Inc BYTE003
  234.             Return
  235.             Goto LABEL012
  236.         Endif
  237.         BOOLEAN002 = 1
  238.         Return
  239.     Endif
  240.     :LABEL012
  241.     If (Left(STRING002, 2) == "UP") Then
  242.         If (BYTE003 > BYTE004 - 1) Then
  243.             STRING003 = "UP"
  244.             BOOLEAN003 = 1
  245.             STRING013 = ScrText(1, BYTE003, 8, 0)
  246.             Gosub LABEL014
  247.             Dec BYTE003
  248.             Return
  249.             Goto LABEL013
  250.         Endif
  251.         BOOLEAN002 = 1
  252.         Return
  253.     Endif
  254.     :LABEL013
  255.     STRING013 = ""
  256.     Return
  257.     :LABEL014
  258.     If (STRING002 == STRING008) Then
  259.         If (BOOLEAN003) Then
  260.             Print STRING009 + "[u" + STRING009 + "[" + String(BYTE002 - BYTE003 - 1) + "A"
  261.             BYTE006 = BYTE003 + 1
  262.         Else
  263.             Print STRING009 + "[u" + STRING009 + "[" + String(BYTE002 - BYTE003 + 1) + "A"
  264.             BYTE006 = BYTE003 - 1
  265.         Endif
  266.         If (Mid(STRING010, BYTE006, 1) == "1") Then
  267.             STRING013 = Mid(STRING013, 1, 7) + " "
  268.             STRING010 = Mid(STRING010, 1, BYTE006 - 1) + "0" + Mid(STRING010, BYTE006 + 1, 50 - BYTE006)
  269.             Gosub LABEL016
  270.         Else
  271.             Gosub LABEL017
  272.             If (BOOLEAN004) Return
  273.             Gosub LABEL019
  274.             If (BOOLEAN005) Return
  275.             STRING013 = Mid(STRING013, 1, 7) + "*"
  276.             STRING010 = Mid(STRING010, 1, BYTE006 - 1) + "1" + Mid(STRING010, BYTE006 + 1, 50 - BYTE006)
  277.         Endif
  278.     Else
  279.         Print STRING009 + "[u" + STRING009 + "[" + String(BYTE002 - BYTE003) + "A"
  280.         Color 112
  281.     Endif
  282.     STRING014 = ScrText(1, BYTE003, 8, 1)
  283.     Print STRING013 + STRING008
  284.     Return
  285.     :LABEL015
  286.     Print STRING014 + STRING008
  287.     Return
  288.     :LABEL016
  289.     STRING004 = RTrim(Mid(STRING013, 2, 7), " ")
  290.     BIGSTR002 = Mid(BIGSTR001, 1, InStr(BIGSTR001, STRING004) - 1)
  291.     If (BIGSTR002 == "") Then
  292.         BYTE006 = InStr(BIGSTR001, ";") + 1
  293.         If (BYTE006 >= Len(BIGSTR001)) Then
  294.             BIGSTR001 = ""
  295.         Else
  296.             BIGSTR002 = BIGSTR002 + Mid(BIGSTR001, BYTE006, Len(BIGSTR001) - BYTE006 + 1)
  297.         Endif
  298.     Else
  299.         BYTE005 = Len(BIGSTR002) + Len(STRING004) + 2
  300.         If (BYTE005 < Len(BIGSTR001)) BIGSTR002 = BIGSTR002 + Mid(BIGSTR001, BYTE005, Len(BIGSTR001) - InStr(BIGSTR001, STRING004) + 1)
  301.     Endif
  302.     BIGSTR001 = BIGSTR002
  303.     Return
  304.     :LABEL017
  305.     BOOLEAN004 = 0
  306.     If (InStr(BIGSTR001, RTrim(Mid(STRING013, 2, 6), " ")) <> 0) Then
  307.         If (BOOLEAN003) Then
  308.             STRING004 = ScrText(1, BYTE003 + 1, 78, 1)
  309.             Goto LABEL018
  310.         Endif
  311.         STRING004 = ScrText(1, BYTE003 - 1, 78, 1)
  312.         :LABEL018
  313.         ClrEol
  314.         Print "@X0CDuplicate Message Number...@X0FRequest ignored@X07"
  315.         Delay 54
  316.         Print STRING008
  317.         ClrEol
  318.         Print STRING004
  319.         BOOLEAN004 = 1
  320.     Endif
  321.     Return
  322.     :LABEL019
  323.     BOOLEAN005 = 0
  324.     If (Len(BIGSTR001) + Len(Trim(Mid(STRING013, 2, 6), " ")) < 2047) Then
  325.         BIGSTR001 = BIGSTR001 + Trim(Mid(STRING013, 2, 6), " ") + ";"
  326.     Else
  327.         If (BOOLEAN003) Then
  328.             STRING004 = ScrText(1, BYTE003 + 1, 78, 1)
  329.         Else
  330.             STRING004 = ScrText(1, BYTE003 - 1, 78, 1)
  331.         Endif
  332.         Color 7
  333.         ClrEol
  334.         Print "@X0CMaximum of @X0F20@X0C Tagged Messages Reached @X0B- @X0FMessage not Tagged"
  335.         Delay 54
  336.         Print STRING008
  337.         ClrEol
  338.         Print STRING004
  339.         BOOLEAN005 = 1
  340.     Endif
  341.     Return
  342.  
  343. ;------------------------------------------------------------------------------
  344. ;
  345. ; Usage report (before postprocessing)
  346. ;
  347. ; ■ Statements used :
  348. ;
  349. ;    3       End
  350. ;    1       Cls
  351. ;    8       ClrEol
  352. ;    1       Wait
  353. ;    2       Color 
  354. ;    79      Goto 
  355. ;    67      Let 
  356. ;    18      Print 
  357. ;    49      If 
  358. ;    5       DispFile 
  359. ;    3       FOpen 
  360. ;    3       FClose 
  361. ;    1       FGet 
  362. ;    1       GetUser
  363. ;    1       PutUser
  364. ;    1       DefColor
  365. ;    3       Delete 
  366. ;    18      Gosub 
  367. ;    14      Return
  368. ;    4       Delay 
  369. ;    4       Inc 
  370. ;    2       Dec 
  371. ;    2       Newline
  372. ;    1       KbdStuff 
  373. ;    1       AnsiPos 
  374. ;    1       SaveScrn
  375. ;    1       RestScrn
  376. ;    1       FRead 
  377. ;    1       FWrite 
  378. ;
  379. ;
  380. ; ■ Functions used :
  381. ;
  382. ;    61      +
  383. ;    18      -
  384. ;    30      ==
  385. ;    4       <>
  386. ;    5       <
  387. ;    8       >
  388. ;    2       >=
  389. ;    41      !
  390. ;    6       &&
  391. ;    10      ||
  392. ;    11      Len(
  393. ;    4       Upper()
  394. ;    15      Mid()
  395. ;    11      Left()
  396. ;    4       Chr()
  397. ;    8       InStr()
  398. ;    3       RTrim()
  399. ;    2       Trim()
  400. ;    2       Inkey()
  401. ;    4       String()
  402. ;    1       CurConf()
  403. ;    1       PCBDat()
  404. ;    5       PPEPath()
  405. ;    1       ReadLine()
  406. ;    2       Exist()
  407. ;    1       S2I()
  408. ;    1       AnsiOn()
  409. ;    2       GetY()
  410. ;    5       FileInf()
  411. ;    8       ScrText()
  412. ;    1       ToInt()
  413. ;
  414. ;------------------------------------------------------------------------------
  415. ;
  416. ; Analysis flags : Wd
  417. ;
  418. ; W - Write user ■ 5
  419. ;     Program writes a user record. Although this may be normal for a
  420. ;     User Editor, it may also be a way to modify an account level.
  421. ;     ■ Search for : PUTUSER
  422. ;
  423. ; d - Access PCBOARD.DAT ■ 2
  424. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  425. ;     for many PPE so they can find various informations on the system
  426. ;     (system paths, max number of lines in messages, ...) but it may also
  427. ;     be a way to gather vital informations.
  428. ;     ■ Search for : PCBDAT()
  429. ;
  430. ;------------------------------------------------------------------------------
  431. ;
  432. ; Postprocessing report
  433. ;
  434. ;    0       For/Next
  435. ;    2       While/EndWhile
  436. ;    31      If/Then or If/Then/Else
  437. ;    1       Select Case
  438. ;
  439. ;------------------------------------------------------------------------------
  440. ;                 AEGiS Corp - Break the routines, code against the machines!
  441. ;------------------------------------------------------------------------------
  442.